# ifndef DEF_INVENTORY
# define DEF_INVENTORY

# include "Source.h"

class Inventory
{
	public:

	Inventory();
	~Inventory();

	std::map<std::string, Armor*>& getHeadArmors();
	std::map<std::string, Armor*>& getBodyArmors();
	std::map<std::string, Armor*>& getArmsArmors();
	std::map<std::string, Armor*>& getHipsArmors();
	std::map<std::string, Armor*>& getFeetArmors();

	std::map<std::string, Weapon*>& getSwords();
	std::map<std::string, Weapon*>& getAxes();
	std::map<std::string, Shield*>& getShields();

	std::map<std::string, Jewel*>& getNecklaces();
	std::map<std::string, Jewel*>& getRings();

	Armor* findArmor( const std::string&);
	Weapon* findWeapon( const std::string&);
	Shield* findShield( const std::string&);
	Jewel* findJewel( const std::string&);

	void addBaseEquipment();

	bool isHeadArmorsEmpty();
	bool isBodyArmorsEmpty();
	bool isArmsArmorsEmpty();
	bool isHipsArmorsEmpty();
	bool isFeetArmorsEmpty();

	bool isSwordsEmpty();
	bool isAxesEmpty();
	bool isShieldsEmpty();

	bool isNecklacesEmpty();
	bool isRingsEmpty();

	void add( ObjectPickUp*);
	void add( ObjectInventory*);

	private:

	std::map<std::string, Armor*> myHeadArmors;
	std::map<std::string, Armor*> myBodyArmors;
	std::map<std::string, Armor*> myArmsArmors;
	std::map<std::string, Armor*> myHipsArmors;
	std::map<std::string, Armor*> myFeetArmors;

	std::map<std::string, Weapon*> mySwords;
	std::map<std::string, Weapon*> myAxes;
	std::map<std::string, Shield*> myShields;

	std::map<std::string, Jewel*> myNecklaces;
	std::map<std::string, Jewel*> myRings;
};

# endif